<?php // $Id: login.php,v 1.1.2.3 2009/02/06 08:20:41 exe-cutor Exp $

	require_once("../../config.php");
	require_once($CFG->dirroot."/auth/shibboleth/auth.php");
	
	//initialize variables
	$errormsg = '';

/// Check for timed out sessions
	if (!empty($SESSION->has_timed_out)) {
		$session_has_timed_out = true;
		$SESSION->has_timed_out = false;
	} else {
		$session_has_timed_out = false;
	}


//HTTPS is potentially required in this page
httpsrequired();

/// Define variables used in page
	if (!$site = get_site()) {
		error("No site found!");
	}

	if (empty($CFG->langmenu)) {
		$langmenu = "";
	} else {
		$currlang = current_language();
		$langs	= get_list_of_languages();
		$langlabel = get_accesshide(get_string('language'));
		$langmenu = popup_form ("$CFG->httpswwwroot/login/index.php?lang=", $langs, "chooselang", $currlang, "", "", "", true, 'self', $langlabel);
	}

	$loginsite = get_string("loginsite");

	$loginurl = (!empty($CFG->alternateloginurl)) ? $CFG->alternateloginurl : '';


	if (get_moodle_cookie() == '') {   
		set_moodle_cookie('nobody');   // To help search for cookies
	}

	if (!empty($CFG->registerauth) or is_enabled_auth('none') or !empty($CFG->auth_instructions)) {
		$show_instructions = true;
	} else {
		$show_instructions = false;
	}

	// Set SAML domain cookie
	$config = get_config('auth/shibboleth');
	

	$IdPs = get_idp_list($config->organization_selection);
	if (isset($_POST['idp']) && isset($IdPs[$_POST['idp']])){
		$selectedIdP = $_POST['idp'];
		set_saml_cookie($selectedIdP);
		
		// Redirect to SessionInitiator with providerId as argument
		if (isset($IdPs[$selectedIdP][1]) && !empty($IdPs[$selectedIdP][1])){
			header('Location: '.$IdPs[$selectedIdP][1].'?providerId='. urlencode($selectedIdP) .'&target='. urlencode($CFG->wwwroot.'/auth/shibboleth/index.php'));
		} else {
			// TODO: This has to be changed to /Shibboleth.sso/DS?entityId= for 
			// Shibbolet 2.x sometime...
			header('Location: /Shibboleth.sso?providerId='. urlencode($selectedIdP) .'&target='. urlencode($CFG->wwwroot.'/auth/shibboleth/index.php'));
		}
	} elseif (isset($_POST['idp']) && !isset($IdPs[$_POST['idp']]))  {
		$errormsg = get_string('auth_shibboleth_errormsg', 'auth');
	}

	$loginsite = get_string("loginsite");
	$navlinks = array(array('name' => $loginsite, 'link' => null, 'type' => 'misc'));
	$navigation = build_navigation($navlinks);
	$focus = 'idp';
	print_header("$site->fullname: $loginsite", $site->fullname, $navigation, $focus,
				 '', true, '<div class="langmenu">'.$langmenu.'</div>');

	include("index_form.html");
	print_footer();

?>
